#ifndef INCLUDED_ASW_ACHIEVEMENTS_H
#define INCLUDED_ASW_ACHIEVEMENTS_H

#include "achievementmgr.h"

enum 
{
	ACHIEVEMENT_ASW_KILL_WITHOUT_FRIENDLY_FIRE = 0,
	ACHIEVEMENT_ASW_NO_FRIENDLY_FIRE,
	ACHIEVEMENT_ASW_SHIELDBUG,
	ACHIEVEMENT_ASW_GRENADE_MULTI_KILL,
	ACHIEVEMENT_ASW_ACCURACY,
	ACHIEVEMENT_ASW_NO_DAMAGE_TAKEN,
	ACHIEVEMENT_ASW_EGGS_BEFORE_HATCH,
	ACHIEVEMENT_ASW_GRUB_KILLS,
	ACHIEVEMENT_ASW_MELEE_PARASITE,
	ACHIEVEMENT_ASW_MELEE_KILLS,
	ACHIEVEMENT_ASW_BARREL_KILLS,
	ACHIEVEMENT_ASW_INFESTATION_CURING,
	ACHIEVEMENT_ASW_FAST_WIRE_HACKS,
	ACHIEVEMENT_ASW_FAST_COMPUTER_HACKS,
	ACHIEVEMENT_ASW_GROUP_HEAL,
	ACHIEVEMENT_ASW_GROUP_DAMAGE_AMP,
	ACHIEVEMENT_ASW_FAST_RELOADS_IN_A_ROW,
	ACHIEVEMENT_ASW_FAST_RELOAD,
	ACHIEVEMENT_ASW_ALL_HEALING,
	ACHIEVEMENT_ASW_PROTECT_TECH,
	ACHIEVEMENT_ASW_TECH_SURVIVES,
	ACHIEVEMENT_ASW_STUN_GRENADE,
	ACHIEVEMENT_ASW_WELD_DOOR,
	ACHIEVEMENT_ASW_DODGE_RANGER_SHOT,
	ACHIEVEMENT_ASW_BOOMER_KILL_EARLY,
	ACHIEVEMENT_ASW_UNLOCK_ALL_WEAPONS,
	ACHIEVEMENT_ASW_FREEZE_GRENADE,
	ACHIEVEMENT_ASW_AMMO_RESUPPLY,
	ACHIEVEMENT_ASW_SENTRY_GUN_KILLS,
	ACHIEVEMENT_ASW_RIFLE_KILLS,
	ACHIEVEMENT_ASW_PRIFLE_KILLS,
	ACHIEVEMENT_ASW_AUTOGUN_KILLS,
	ACHIEVEMENT_ASW_SHOTGUN_KILLS,
	ACHIEVEMENT_ASW_VINDICATOR_KILLS,
	ACHIEVEMENT_ASW_PISTOL_KILLS,
	ACHIEVEMENT_ASW_PDW_KILLS,
	ACHIEVEMENT_ASW_TESLA_GUN_KILLS,
	ACHIEVEMENT_ASW_RAILGUN_KILLS,
	ACHIEVEMENT_ASW_FLAMER_KILLS,
	ACHIEVEMENT_ASW_CHAINSAW_KILLS,
	ACHIEVEMENT_ASW_MINIGUN_KILLS,
	ACHIEVEMENT_ASW_SNIPER_RIFLE_KILLS,
	ACHIEVEMENT_ASW_GRENADE_LAUNCHER_KILLS,
	ACHIEVEMENT_ASW_HORNET_KILLS,
	ACHIEVEMENT_ASW_LASER_MINE_KILLS,
	ACHIEVEMENT_ASW_MINE_KILLS,
	ACHIEVEMENT_ASW_EASY_CAMPAIGN,
	ACHIEVEMENT_ASW_NORMAL_CAMPAIGN,
	ACHIEVEMENT_ASW_HARD_CAMPAIGN,
	ACHIEVEMENT_ASW_INSANE_CAMPAIGN,
	ACHIEVEMENT_ASW_KILL_GRIND_1,
	ACHIEVEMENT_ASW_KILL_GRIND_2,
	ACHIEVEMENT_ASW_KILL_GRIND_3,
	ACHIEVEMENT_ASW_KILL_GRIND_4,
	ACHIEVEMENT_ASW_SPEEDRUN_LANDING_BAY,
	ACHIEVEMENT_ASW_SPEEDRUN_DESCENT,
	ACHIEVEMENT_ASW_SPEEDRUN_DEIMA,
	ACHIEVEMENT_ASW_SPEEDRUN_RYDBERG,
	ACHIEVEMENT_ASW_SPEEDRUN_RESIDENTIAL,
	ACHIEVEMENT_ASW_SPEEDRUN_SEWER,
	ACHIEVEMENT_ASW_SPEEDRUN_TIMOR,
	ACHIEVEMENT_ASW_CAMPAIGN_NO_DEATHS,
	ACHIEVEMENT_ASW_MISSION_NO_DEATHS,
	ACHIEVEMENT_ASW_PARA_HAT,
	ACHIEVEMENT_ASW_IMBA_CAMPAIGN,
	ACHIEVEMENT_ASW_HARDCORE,
};

#define ACH_LISTEN_ALIEN_DEATH_EVENTS				0x1000

#ifdef CLIENT_DLL

class C_ASW_Marine;
class CASW_Achievement;

class CASW_Achievement_Manager : public CAchievementMgr
{
public:
	typedef CAchievementMgr BaseClass;

	CASW_Achievement_Manager();

	virtual bool Init();
	virtual void LevelInitPreEntity();
	virtual void FireGameEvent( IGameEvent *event );
	virtual void Shutdown();

	CUtlVector<CASW_Achievement *> m_vecAlienDeathEventListeners[MAX_SPLITSCREEN_PLAYERS];	// vector of achievements that are listening for alien death events
};

// base class for all Alien Swarm achievements

class CASW_Achievement : public CBaseAchievement
{	
public:
	typedef CBaseAchievement BaseClass;

	CASW_Achievement();

	virtual const char *GetIconPath();

	virtual bool OnAlienDied( int nAlienClass, C_ASW_Marine *pKiller, int nWeaponClass );

	void SetAlienClassFilter( int nAlienClass ) { m_nAlienClassFilter = nAlienClass; }
	void SetWeaponClassFilter( int nWeaponClass ) { m_nWeaponClassFilter = nWeaponClass; }

	int m_nAlienClassFilter;
	int m_nWeaponClassFilter;
};

extern CASW_Achievement_Manager g_ASW_AchievementMgr;	// global achievement manager for Alien Swarm

#endif

#endif // INCLUDED_ASW_ACHIEVEMENTS_H